package common

import (
	"github.com/go-redis/redis"
	"github.com/spf13/viper"
)

// 声明一个全局的rdb变量
var rdb *redis.Client

// InitRedisClient 初始化连接
func InitRedisClient() (err error) {
	rdb = redis.NewClient(&redis.Options{
		Addr:     viper.GetString("redis.Addr"),
		Password: viper.GetString("redis.Password"), // no password set
		DB:       viper.GetInt("redis.DB"),          //
	})

	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
func GetRedis() *redis.Client {
	return rdb
}

// 哨兵模式
func initRedisClientSentry() (err error) {
	rdb := redis.NewFailoverClient(&redis.FailoverOptions{
		MasterName:    "master",
		SentinelAddrs: []string{"x.x.x.x:26379", "xx.xx.xx.xx:26379", "xxx.xxx.xxx.xxx:26379"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}

//集群模式
func initRedisClientColony() (err error) {
	rdb := redis.NewClusterClient(&redis.ClusterOptions{
		Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
	})
	_, err = rdb.Ping().Result()
	if err != nil {
		return err
	}
	return nil
}
